package com.wzx.modules.menu.entity;

import java.time.LocalDateTime;
import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 菜单表
 * </p>
 *
 * @author wzx
 * @since 2023-03-15
 */
@Data
  @EqualsAndHashCode(callSuper = false)
  @Accessors(chain = true)
public class Menu implements Serializable {


  /**
   * 菜单Id
   */
  @JsonSerialize(using= ToStringSerializer.class)
  @TableId(value = "id", type = IdType.ASSIGN_ID)
  private Long menuId;

  /**
   * 菜单名
   */
  private String menuName;

  /**
   * 父菜单ID
   */
  private Long parentId;

  /**
   * 路由名称
   */
  private String routerName;

  /**
   * 路由地址
   */
  private String path;

  /**
   * 组件路径
   */
  private String component;

  /**
   * 菜单状态（0显示 1隐藏）
   */
  private String visible;

  /**
   * 菜单状态（0正常 1停用）
   */
  private String status;

  /**
   * 菜单图标
   */
  private String icon;

  /**
   * 备注
   */
  private String remark;

  /**
   * 创建者
   */
  @TableField(fill = FieldFill.INSERT)
  private String createUser;

  /**
   * 创建时间
   */
  @TableField(fill = FieldFill.INSERT)
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private LocalDateTime createTime;

  /**
   * 更新者
   */
  @TableField(fill = FieldFill.INSERT)
  private String updateUser;

  /**
   * 更新时间
   */
  @TableField(fill = FieldFill.INSERT)
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  private LocalDateTime updateTime;

  /**
   * 逻辑删除(0:正常 1:删除)
   */
  private Integer idDelete;

}
